<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
   
   <meta name="description" content="string operations">
    
    <meta name="author" content="John S. Urban" >
    <link rel="icon" href="../favicon.png">

    <title>lower &ndash; M_strings</title>

    <link href="../css/bootstrap.min.css" rel="stylesheet">
    <link href="../css/pygments.css" rel="stylesheet">
    <link href="../css/font-awesome.min.css" rel="stylesheet">
    <link href="../css/local.css" rel="stylesheet">
    
    <link  href="../tipuesearch/tipuesearch.css" rel="stylesheet">
    
    

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    
    <script src="../js/jquery-2.1.3.min.js"></script>
    <script src="../js/svg-pan-zoom.min.js"></script>

  </head>

  <body>

    <!-- Fixed navbar -->
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="../index.html">M_strings </a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
        
            <li class="dropdown hidden-xs visible-sm visible-md hidden-lg">
              <a href="#" class="dropdown-toggle"
              data-toggle="dropdown" role="button"
              aria-haspopup="true"
     aria-expanded="false">Contents <span class="caret"></span></a>
        <ul class="dropdown-menu">
          
              
            <li><a href="../lists/files.html">Source Files</a></li>
        
        
        
            <li><a href="../lists/modules.html">Modules</a></li>
        
            
                                
            <li><a href="../lists/procedures.html">Procedures</a></li>
        
               
            <li><a href="../lists/types.html">Derived Types</a></li>
        
        
            </ul>
            </li>


<li class="visible-xs hidden-sm visible-lg"><a href="../lists/files.html">Source Files</a></li>



<li class="visible-xs hidden-sm visible-lg"><a href="../lists/modules.html">Modules</a></li>



<li class="visible-xs hidden-sm visible-lg"><a href="../lists/procedures.html">Procedures</a></li>

                             
<li class="visible-xs hidden-sm visible-lg"><a href="../lists/types.html">Derived Types</a></li>


          </ul>
        
        <form action="../search.html" class="navbar-form navbar-right" role="search">
        <div class="form-group">
          <input type="text" class="form-control" placeholder="Search" name="q" id="tipue_search_input" autocomplete="off" required>
        </div>
<!--
        <button type="submit" class="btn btn-default">Submit</button>
-->
        </form>
        
        </div><!--/.nav-collapse -->
      </div>
    </nav>

    <div class="container">
    
  
  <div class="row">
    <h1>lower
      <small>Function</small>
    
    </h1>
    
<div class="row">
  <div class="col-lg-12">
<div class="well well-sm">
  <ul class="list-inline" style="margin-bottom:0px;display:inline">
     
     
     
     
    
    
     <li><i class="fa fa-list-ol"></i>
       <a data-toggle="tooltip"
    data-placement="bottom" data-html="true"
    title=" 1.0% of total for procedures.">24 statements</a>
     </li> 
     
     
     
    <li><i class="fa fa-code"></i><a href="../src/M_strings.f90"> Source File</a></li>
     
     
  </ul>
  <ol class="breadcrumb in-well text-right">
  
    
     <li><a href='../sourcefile/m_strings.f90.html'>M_strings.f90</a></li>
    
     <li><a href='../module/m_strings.html'>M_strings</a></li>
    
  
     <li class="active">lower</li>
  </ol>
</div>
</div>
</div>
<script>
  $(function () {
  $('[data-toggle="tooltip"]').tooltip()
  })
</script>

  </div>
  
  <div class="row">
    <div class="col-md-3 hidden-xs hidden-sm visible-md visible-lg">
    
<div id="sidebar">
  
<h3>Contents</h3>
 



<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#vars-0">Variables</a></h3></div>
  <div id="vars-0" class="panel-collapse collapse">
    <div class="list-group">
      
      <a class="list-group-item" href="../proc/lower.html#variable-diff">diff</a>
      
      <a class="list-group-item" href="../proc/lower.html#variable-i~12">i</a>
      
      <a class="list-group-item" href="../proc/lower.html#variable-ibegin">ibegin</a>
      
      <a class="list-group-item" href="../proc/lower.html#variable-iend~3">iend</a>
      
    </div>
  </div>
</div>




















<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title">Source Code</h3></div>
  <div class="list-group">
    <a class="list-group-item" href="../proc/lower.html#src">lower</a>
  </div>
</div>



</div>

    </div>
    
    <div class="col-md-9" id='text'>
    <h2>
public pure elemental function lower(str, begin, end) result(string)
    
    
   
</h2>
    
  


    
    <h2 id="name">NAME</h2>
<div class="codehilite"><pre><span></span><code>lower(3f) - [M_strings:CASE] changes a string to lowercase over
specified range
(LICENSE:PD)
</code></pre></div>

<h2 id="synopsis">SYNOPSIS</h2>
<div class="codehilite"><pre><span></span><code><span class="nv">elemental</span> <span class="nv">pure</span> <span class="nv">function</span> <span class="nv">lower</span><span class="ss">(</span><span class="nv">str</span>,<span class="nv">begin</span>,<span class="k">end</span><span class="ss">)</span> <span class="nb">result</span> <span class="ss">(</span><span class="nv">string</span><span class="ss">)</span>

 <span class="nv">character</span><span class="ss">(</span><span class="o">*</span><span class="ss">)</span>, <span class="nv">intent</span><span class="ss">(</span><span class="nv">in</span><span class="ss">)</span> :: <span class="nv">str</span>
 <span class="nv">integer</span>,<span class="nv">optional</span>         :: <span class="nv">begin</span>, <span class="k">end</span>
 <span class="nv">character</span><span class="ss">(</span><span class="nv">len</span><span class="ss">(</span><span class="nv">str</span><span class="ss">))</span>      :: <span class="nv">string</span>  <span class="o">!</span> <span class="nv">output</span> <span class="nv">string</span>
</code></pre></div>

<h2 id="description">DESCRIPTION</h2>
<div class="codehilite"><pre><span></span><code>  <span class="nv">lower</span><span class="ss">(</span><span class="nv">string</span><span class="ss">)</span> <span class="nv">returns</span> <span class="nv">a</span> <span class="nv">copy</span> <span class="nv">of</span> <span class="nv">the</span> <span class="nv">input</span> <span class="nv">string</span> <span class="nv">with</span> <span class="nv">all</span> <span class="nv">characters</span>
  <span class="nv">converted</span> <span class="nv">to</span> <span class="nv">miniscule</span> <span class="nv">over</span> <span class="nv">the</span> <span class="nv">specified</span> <span class="nv">range</span>, <span class="nv">assuming</span> <span class="nv">ASCII</span>
  <span class="nv">character</span> <span class="nv">sets</span> <span class="nv">are</span> <span class="nv">being</span> <span class="nv">used</span>. <span class="k">If</span> <span class="nv">no</span> <span class="nv">range</span> <span class="nv">is</span> <span class="nv">specified</span> <span class="nv">the</span> <span class="nv">entire</span>
  <span class="nv">string</span> <span class="nv">is</span> <span class="nv">converted</span> <span class="nv">to</span> <span class="nv">miniscule</span>.
</code></pre></div>

<h2 id="options">OPTIONS</h2>
<div class="codehilite"><pre><span></span><code><span class="nv">str</span>    <span class="nv">string</span> <span class="nv">to</span> <span class="nv">convert</span> <span class="nv">to</span> <span class="nv">miniscule</span>
<span class="nv">begin</span>  <span class="nv">optional</span> <span class="nv">starting</span> <span class="nv">position</span> <span class="nv">in</span> <span class="s2">&quot;</span><span class="s">str</span><span class="s2">&quot;</span> <span class="nv">to</span> <span class="nv">begin</span> <span class="nv">converting</span> <span class="nv">to</span>
       <span class="nv">miniscule</span>
<span class="k">end</span>    <span class="nv">optional</span> <span class="nv">ending</span> <span class="nv">position</span> <span class="nv">in</span> <span class="s2">&quot;</span><span class="s">str</span><span class="s2">&quot;</span> <span class="nv">to</span> <span class="nv">stop</span> <span class="nv">converting</span> <span class="nv">to</span>
       <span class="nv">miniscule</span>
</code></pre></div>

<h2 id="results">RESULTS</h2>
<div class="codehilite"><pre><span></span><code>lower  copy of the input string with all characters converted to
       miniscule over optionally specified range.
</code></pre></div>

<h2 id="trivia">TRIVIA</h2>
<div class="codehilite"><pre><span></span><code>The terms &quot;uppercase&quot; and &quot;lowercase&quot; date back to the early days of
the mechanical printing press. Individual metal alloy casts of each
needed letter, or punctuation symbol, were meticulously added to a
press block, by hand, before rolling out copies of a page. These
metal casts were stored and organized in wooden cases. The more
often needed miniscule letters were placed closer to hand, in the
lower cases of the work bench. The less often needed, capitalized,
majuscule letters, ended up in the harder to reach upper cases.
</code></pre></div>

<h2 id="example">EXAMPLE</h2>
<div class="codehilite"><pre><span></span><code><span class="nv">Sample</span> <span class="nv">program</span>:

   <span class="nv">program</span> <span class="nv">demo_lower</span>
   <span class="nv">use</span> <span class="nv">M_strings</span>, <span class="nv">only</span>: <span class="nv">lower</span>
   <span class="nv">implicit</span> <span class="nv">none</span>
   <span class="nv">character</span><span class="ss">(</span><span class="nv">len</span><span class="o">=</span>:<span class="ss">)</span>,<span class="nv">allocatable</span>  :: <span class="nv">s</span>
      <span class="nv">s</span><span class="o">=</span><span class="s1">&#39;</span><span class="s"> ABCDEFG abcdefg </span><span class="s1">&#39;</span>
      <span class="nv">write</span><span class="ss">(</span><span class="o">*</span>,<span class="o">*</span><span class="ss">)</span> <span class="s1">&#39;</span><span class="s">mixed-case input string is ....</span><span class="s1">&#39;</span>,<span class="nv">s</span>
      <span class="nv">write</span><span class="ss">(</span><span class="o">*</span>,<span class="o">*</span><span class="ss">)</span> <span class="s1">&#39;</span><span class="s">lower-case output string is ...</span><span class="s1">&#39;</span>,<span class="nv">lower</span><span class="ss">(</span><span class="nv">s</span><span class="ss">)</span>
   <span class="k">end</span> <span class="nv">program</span> <span class="nv">demo_lower</span>

<span class="nv">Expected</span> <span class="nv">output</span>

   <span class="nv">mixed</span><span class="o">-</span><span class="nv">case</span> <span class="nv">input</span> <span class="nv">string</span> <span class="nv">is</span> .... <span class="nv">ABCDEFG</span> <span class="nv">abcdefg</span>
   <span class="nv">lower</span><span class="o">-</span><span class="nv">case</span> <span class="nv">output</span> <span class="nv">string</span> <span class="nv">is</span> ... <span class="nv">abcdefg</span> <span class="nv">abcdefg</span>
</code></pre></div>

<h2 id="author">AUTHOR</h2>
<div class="codehilite"><pre><span></span><code>John S. Urban
</code></pre></div>

<h2 id="license">LICENSE</h2>
<div class="codehilite"><pre><span></span><code>Public Domain
</code></pre></div>
    

    <h3>Arguments</h3>
    
      
<table class="table table-striped varlist">
<thead><tr><th>Type</th>
<th>Intent</th><th>Optional</th>
<th>Attributes</th><th></th><th>Name</th><th></th></thead>



<tbody>

  
  
  
  
<tr>
  
  <td><span class="anchor" id="variable-str~5"></span>character(len=*),</td>
  <td>intent(in)</td>
  <td></td>
  
  <td></td><td>::</td>
  <td><strong>str</strong></td><td></td>
  
</tr>

  
  
  
  
<tr>
  
  <td><span class="anchor" id="variable-begin"></span>integer,</td>
  <td>intent(in),</td>
  <td>optional</td>
  
  <td></td><td>::</td>
  <td><strong>begin</strong></td><td></td>
  
</tr>

  
  
  
  
<tr>
  
  <td><span class="anchor" id="variable-end~2"></span>integer,</td>
  <td>intent(in),</td>
  <td>optional</td>
  
  <td></td><td>::</td>
  <td><strong>end</strong></td><td></td>
  
</tr>

</tbody>
</table>

    
    
    
    
    
    
    
   <h3>Return Value <small><span class="anchor" id="variable-string~7"></span>character(len=len(str))
  </small></h3>
    
    
    
    
     
    <br>

    <section class="visible-xs visible-sm hidden-md">
      
<h3>Contents</h3>
 



<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#vars-1">Variables</a></h3></div>
  <div id="vars-1" class="panel-collapse collapse">
    <div class="list-group">
      
      <a class="list-group-item" href="../proc/lower.html#variable-diff">diff</a>
      
      <a class="list-group-item" href="../proc/lower.html#variable-i~12">i</a>
      
      <a class="list-group-item" href="../proc/lower.html#variable-ibegin">ibegin</a>
      
      <a class="list-group-item" href="../proc/lower.html#variable-iend~3">iend</a>
      
    </div>
  </div>
</div>




















<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title">Source Code</h3></div>
  <div class="list-group">
    <a class="list-group-item" href="../proc/lower.html#src">lower</a>
  </div>
</div>



    </section>
    <br class="visible-xs visible-sm hidden-md">

    

    
    <section>    
      <h2>Variables</h2>
    
<table class="table table-striped varlist">
<thead><tr><th>Type</th><th>Visibility</th>

<th>Attributes</th><th></th><th>Name</th><th></th><th>Initial</th><th></th></thead>



<tbody>

  
  
  
  
<tr>
  
  <td><span class="anchor" id="variable-diff"></span>integer,</td>
  
  <td>public,</td>
  <td>parameter</td><td>::</td>
  <td><strong>diff</strong></td><td> =</td><td>iachar('A')-iachar('a')</td><td></td>
  
</tr>

  
  
  
  
<tr>
  
  <td><span class="anchor" id="variable-i~12"></span>integer,</td>
  
  <td>public</td>
  <td></td><td>::</td>
  <td><strong>i</strong></td><td></td><td></td><td></td>
  
</tr>

  
  
  
  
<tr>
  
  <td><span class="anchor" id="variable-ibegin"></span>integer,</td>
  
  <td>public</td>
  <td></td><td>::</td>
  <td><strong>ibegin</strong></td><td></td><td></td><td></td>
  
</tr>

  
  
  
  
<tr>
  
  <td><span class="anchor" id="variable-iend~3"></span>integer,</td>
  
  <td>public</td>
  <td></td><td>::</td>
  <td><strong>iend</strong></td><td></td><td></td><td></td>
  
</tr>

</tbody>
</table>

    </section>
    <br>
    
    
    
    
    

    
    
    
    
    


    
    
    
    <section>
    <h2><span class="anchor" id="src"></span>Source Code</h2>
    <div class="highlight"><pre><span></span><span class="k">elemental pure function </span><span class="n">lower</span><span class="p">(</span><span class="n">str</span><span class="p">,</span><span class="n">begin</span><span class="p">,</span><span class="k">end</span><span class="p">)</span> <span class="k">result</span> <span class="p">(</span><span class="n">string</span><span class="p">)</span>

<span class="c">! ident_23=&quot;@(#)M_strings::lower(3f): Changes a string to lowercase over specified range&quot;</span>

<span class="kt">character</span><span class="p">(</span><span class="o">*</span><span class="p">),</span> <span class="k">intent</span><span class="p">(</span><span class="n">in</span><span class="p">)</span>     <span class="kd">::</span> <span class="n">str</span>
<span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">str</span><span class="p">))</span>          <span class="kd">::</span> <span class="n">string</span>
<span class="kt">integer</span><span class="p">,</span><span class="k">intent</span><span class="p">(</span><span class="n">in</span><span class="p">),</span><span class="k">optional</span>  <span class="kd">::</span> <span class="n">begin</span><span class="p">,</span> <span class="k">end</span>
<span class="kt">integer</span>                      <span class="kd">::</span> <span class="n">i</span>
<span class="kt">integer</span>                      <span class="kd">::</span> <span class="n">ibegin</span><span class="p">,</span> <span class="n">iend</span>
<span class="kt">integer</span><span class="p">,</span><span class="k">parameter</span>             <span class="kd">::</span> <span class="n">diff</span> <span class="o">=</span> <span class="nb">iachar</span><span class="p">(</span><span class="s1">&#39;A&#39;</span><span class="p">)</span><span class="o">-</span><span class="nb">iachar</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">)</span>
   <span class="n">string</span> <span class="o">=</span> <span class="n">str</span>
   <span class="n">ibegin</span><span class="o">=</span><span class="mi">1</span>
   <span class="n">iend</span><span class="o">=</span><span class="nb">len_trim</span><span class="p">(</span><span class="n">str</span><span class="p">)</span>

   <span class="k">if</span> <span class="p">(</span><span class="nb">present</span><span class="p">(</span><span class="n">begin</span><span class="p">))</span><span class="k">then</span>
<span class="k">      </span><span class="n">ibegin</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">begin</span><span class="p">),</span><span class="n">iend</span><span class="p">)</span>
   <span class="k">endif</span>

<span class="k">   if</span> <span class="p">(</span><span class="nb">present</span><span class="p">(</span><span class="k">end</span><span class="p">))</span><span class="k">then</span>
<span class="k">      </span><span class="n">iend</span><span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="nb">min</span><span class="p">(</span><span class="n">iend</span><span class="p">,</span><span class="k">end</span><span class="p">))</span>
   <span class="k">endif</span>

<span class="k">   do </span><span class="n">concurrent</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="n">ibegin</span><span class="p">:</span><span class="n">iend</span><span class="p">)</span>                   <span class="c">! step thru each letter in the string in specified range</span>
      <span class="k">select case</span> <span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">i</span><span class="p">:</span><span class="n">i</span><span class="p">))</span>
      <span class="k">case</span> <span class="p">(</span><span class="s1">&#39;A&#39;</span><span class="p">:</span><span class="s1">&#39;Z&#39;</span><span class="p">)</span>
         <span class="n">string</span><span class="p">(</span><span class="n">i</span><span class="p">:</span><span class="n">i</span><span class="p">)</span> <span class="o">=</span> <span class="nb">char</span><span class="p">(</span><span class="nb">iachar</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">i</span><span class="p">:</span><span class="n">i</span><span class="p">))</span><span class="o">-</span><span class="n">diff</span><span class="p">)</span>   <span class="c">! change letter to miniscule</span>
      <span class="k">case </span><span class="n">default</span>
      <span class="k">end select</span>
<span class="k">   enddo</span>

<span class="k">end function </span><span class="n">lower</span>
</pre></div>

    </section>
    <br>
    
    
    </div>
  </div>


    <hr>    
    </div> <!-- /container -->
    <footer>
      <div class="container">
      <div class="row">
        <div class="col-xs-6 col-md-4"><p>&copy; 2022 
                                          </p></div>
        <div class="col-xs-6 col-md-4 col-md-push-4">
          <p class="text-right">
            Documentation generated by 
            <a href="https://github.com/cmacmackin/ford">FORD</a>
             on 2022-01-16 22:32  
          </p>
        </div>
        <div class="col-xs-12 col-md-4 col-md-pull-4"><p class="text-center"> M_strings was developed by John S. Urban</p></div>
      </div>
      <br>
      </div> <!-- /container -->    
    </footer>

    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
<!--
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
-->
    <script src="../js/bootstrap.min.js"></script>
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <script src="../js/ie10-viewport-bug-workaround.js"></script>

    <!-- MathJax JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } },
        jax: ['input/TeX','input/MathML','output/HTML-CSS'],
        extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']
      });
    </script>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    
    
    <script src="../tipuesearch/tipuesearch_content.js"></script>
    <script src="../tipuesearch/tipuesearch_set.js"></script>
    <script src="../tipuesearch/tipuesearch.js"></script>
    
    
  </body>
</html>